Generally, configuration management is the process of detailed recording and updating of an enterprise's IT (information technology) infrastructure. A common conventional practice is to maintain the hardware and software configuration information of the IT resources in a central database, often referred to as a Configuration Management Database (CMDB). When the CMDB is setup correctly, it stores configuration and relational information about defined entities which are part of the information system. These entities are called Configuration Items (CI).
Often, there is found a Common Information Model (CIM), which is a high level abstraction of the participating entities that are used to capture the status of the entities and their interactions. In order to be useful, the CMDB should accurately reflect the states of the entities. However, in a large enterprise with thousands of entities it is often difficult to scale the tools efficiently to track changes in an agile manner.
Several factors contribute to an inability to maintain a consistent view of changes. Conventional discovery tools that work in a scan-and-gather mode are configured to perform a sweep of systems periodically. However, the polling interval involved cannot be decreased to update changes more quickly, as this can significantly increase overhead. The entire scan sweep of a large IT environment may itself take several hours, thereby inviting a measure inconsistency. Further, while many enterprises can and do enforce a policy of allowing only planned changes, thereby making it easy to track a change in a systematic manner, there still often emerge scenarios where an out-of-band change is unavoidable in a critical situation. Such changes (e.g., install, a patch, reset a password, security compliance enforcement) are executed using stand-alone scripts or directly through product GUIs (graphical user interfaces). Thus, an out-of-band change can put a system in a different state without creating a record of the change apriori.
In addition to the aforementioned factors that make it difficult to maintain a consistent view of a single entity, software dependencies can also prove problematic. Particularly, changes to one software entity may affect several other dependent entities, thereby creating a ripple of inconsistencies.